1. Technical Field
The present invention relates, generally, to conference enabled networking systems and, more specifically, to a conference enabled networking system that distributes an application across a server network having heterogeneous keyboard configurations. More specifically still, the present invention relates to a method and apparatus for providing translations of key codes that allow the application to be used in a conference among the servers having different keyboards.
2. Description of the Related Art
The X Windows system implements a two-dimensional, interactive graphics environment using a distributed, client/server architecture. An X application (client) connects to the X server and communicates with it using X protocol. When an X application is conference-enabled, the application connects to an X Window conference-enabler rather than the X server. An X Window conference-enabler appears to the application to be an X server, while at the same time appearing to the X server as an application. The X Windows conference-enabler connects to multiple X servers on behalf of the application, distributing the application requests to each of the X servers. The effect is that the application is distributed to each display, and each participant in the conference may interact with the distributed application. The application is not aware that it is being distributed to multiple X servers.
The keyboard is one area that X has generalized so that X applications are made portable across different hardware systems. Physical keys on the keyboard are represented as key codes in X protocol. A key code is just number ranging from 8 to 255. The key code assigned to a particular physical key is server dependent. Key codes are most often used in KeyPress and KeyRelease events which are generated whenever someone presses and releases a key. In addition to the key codes, these events also contain a bitmask which indicates which set of modifiers (such as the Shift or Control keys) were pressed just prior to the event. X applications will usually not use key codes directly but rather interpret the key code/modifier combination into a more meaningful keysym.
A keysym is a defined constant that represents a certain character. An X server maintains a mapping between keysyms and key codes that is global to all X applications connected to it. An X server makes no interpretation of this mapping; it stores the mapping so that X applications may use it to translate the key codes and modifiers of events into keysyms. There may be several keysyms mapped to a single key code. For instance, the key code for the "a" key on a keyboard has the "a" keysym mapped to it as well as the "A" keysym that is used when the Shift or Shift Lock is pressed.
When an X application is conference-enabled, the X servers in the conference may have a different set of key codes and/or a different set of keysym to key code mappings. If the X conference-enabler did not translate the key codes in any protocol, then participants in a conference would not be able to provide the keyboard input they expect to the application. In addition, since a key code on one X server may be invalid on a different X server, some key codes in the X protocol may produce errors that could cause the conference-enabled X application to terminate abnormally.
In order for the conference-enabled X application to interpret the key codes in the protocol correctly, the X conference-enabler must provide a means to translate the key codes between the various X servers in the conference. Accordingly, what is needed is a method and apparatus for translating key codes between the various X servers in the conference.